package com.atguigu.acyjl;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.atguigu.acyjl.activity.PrimaryPage;
import com.atguigu.acyjl.constants.Constant;

public class Market extends AppCompatActivity {
    public TextView scores;
    public Button btnGood1,btnGood2,btnGood3;
    Settings settings = new Settings();//从关卡activity抓取得分数据
    public static SharedPreferences shp;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_market);
        scores = findViewById(R.id.scores);
        btnGood1 = findViewById(R.id.btnGood1);
        btnGood2 = findViewById(R.id.btnGood2);
        btnGood3 = findViewById(R.id.btnGood3);
        shp = getSharedPreferences(Constant.KEY_SHAREDPREFERENCE_NAME,Context.MODE_PRIVATE);
        boolean isFirstTime = shp.getBoolean(Constant.KEY_FIRST_TIME, true);
        SharedPreferences.Editor editor = shp.edit();
/////////////////////////////////////////////////////////////////////////////////////////
        final Handler handler = new Handler();
        final SharedPreferences.Editor editor1 = shp.edit();
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // 在此处编写需要实时调用的方法
                editor1.putString(Constant.KEY_TEXT_SCORES,scores.getText().toString());
                editor1.putString(Constant.KEY_TEXT_GOOD1,btnGood1.getText().toString());
                editor1.putString(Constant.KEY_TEXT_GOOD2,btnGood2.getText().toString());
                editor1.putString(Constant.KEY_TEXT_GOOD3,btnGood3.getText().toString());
                editor1.apply();
                handler.postDelayed(this, 100); // 每隔秒执行一次
            }
        };
        // 在需要开始定时任务的地方调用以下代码
        handler.postDelayed(runnable, 100); // 延迟秒后开始执行
/////////////////////////////////////////////////////////////////////////////////////////


        scores.setText(settings.score);//1st进market
        if (isFirstTime) {//无视清除按键的第一次打开market
            //即按下清除按键，打开次数也视作不清零
            // 将标志位设置为false，表示以后不再是第一次打开
            editor.putBoolean(Constant.KEY_FIRST_TIME, false);
            editor.apply();
        } else {//只有用户非首次进入-商城活动类-才会触发  手机右下角清除键也无法重置
            if(!shp.getString(Constant.KEY_TEXT_SCORES,"0").equals("0")){//如果曾经有过关经历
                scores.setText(shp.getString(Constant.KEY_TEXT_SCORES,"0123"));//打开商城时提取xml资源，更新得分
                if(Integer.valueOf(settings.score)>Integer.valueOf(scores.getText().toString())){//有过关经历且又过关了
                    scores.setText(settings.score);//将又一次过关的金币采样过来，覆盖前第二行数据
                }

            }
            if(settings.score.equals("0")){
                //程序被手机右下角清除键清除，重新进入程序时，settings.score清零，将xml资源赋值给settings.score
                settings.score = shp.getString(Constant.KEY_TEXT_SCORES,"0456");
            }
            btnGood1.setText(shp.getString(Constant.KEY_TEXT_GOOD1,btnGood1.getText().toString()));
            btnGood2.setText(shp.getString(Constant.KEY_TEXT_GOOD2,btnGood2.getText().toString()));
            btnGood3.setText(shp.getString(Constant.KEY_TEXT_GOOD3,btnGood3.getText().toString()));
        }

        //考虑清除按键的第一次打开，即清除按键按下，将打开次数视作归零
        //^^^^^^^^本活动类暂不需要
        ///////////////////////////////////////
        //MainScore 非空  且 非零 解决新过关2900变1900问题
        if(!shp.getString(Constant.KEY_MAIN_SCORE,"123").equals("123")){
            if(Integer.valueOf(shp.getString(Constant.KEY_MAIN_SCORE,"0"))-200
                    >Integer.valueOf(scores.getText().toString())){
                scores.setText(shp.getString(Constant.KEY_MAIN_SCORE,"xx"));
                settings.score = shp.getString(Constant.KEY_MAIN_SCORE,"xx");//解决-30问题
                editor.putString(Constant.KEY_MAIN_SCORE,"0");
                editor.apply();
            }
        }

        if(!btnGood1.getText().toString().equals("已购买")) {//没买过的货品才能购买
            btnGood1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    buy(btnGood1);
                    btnGood1.setText("已购买");
                }
            });
        }
        if(!btnGood2.getText().toString().equals("已购买")) {//没买过的货品才能购买
            btnGood2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    buy(btnGood2);
                    btnGood2.setText("已购买");
                }
            });
        }
        if(!btnGood3.getText().toString().equals("已购买")) {//没买过的货品才能购买
            btnGood3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    buy(btnGood3);
                    btnGood3.setText("已购买");
                }
            });
        }
    }



    @Override
    public void onBackPressed() {
        super.onBackPressed();
        Intent intent = new Intent(Market.this, PrimaryPage.class);//返回应用首页
        //因为有时候过关了 显示win页面 用户进入商城后再back退出 就会返回到win界面
        //为了避免返回win界面，则直接跳转应用首页即可
        startActivity(intent);
    }

    public void buy(Button btnGoodx){
        //购买货品后，关卡活动类中的分数变量，与本商城类的分数变量都要减去货物价格
        if(!btnGoodx.getText().toString().equals("已购买")){
            if(Integer.parseInt(scores.getText().toString()) > Integer.parseInt(btnGoodx.getText().toString())){
                settings.score = String.valueOf(
                        Integer.valueOf(settings.score)
                        -Integer.parseInt(btnGoodx.getText().toString()));
                scores.setText(settings.score);
            }
        }

    }

    @Override
    protected void onPause() {
        super.onPause();
        SharedPreferences.Editor editor = shp.edit();
        editor.putString(Constant.KEY_TEXT_SCORES,scores.getText().toString());
        editor.apply();
    }

}




